var help_ui_overlay = false;

if(window.rcmail) {
  rcmail.addEventListener('init', function(evt) {
    
    // register the event for the ajax callback
    rcmail.addEventListener('plugin.help_ui_receive', help_ui_elements_receive);
    
    $('#help_ui_link').click(function() {
      help_ui_overlay = true;
      $('body').addClass('help_ui_hide');
      $('html').addClass('help_ui_hide');
      $('<div></div>').attr('id', 'help_ui_overlay_screen').css({ 'z-index' : '101', 'top' : 0, 'left' : 0, 'width' : $(window).width(), 'height' : $(window).height() }).appendTo('body').css('display', 'block');        
      lock = rcmail.set_busy(true, 'loading');
      rcmail.http_post('plugin.help_ui_get_elements', '', lock);        
      return false;
    });
    
    $('#help_ui_overlay_screen').live('click', function() {
      return false;
    });
    
    // fire up the ESC event listener
  	$(document).keydown(function (e) { 
  	  if(help_ui_overlay && e.which == 27) {
  	    $('#help_ui_overlay_screen').remove();
  	    $('.help_ui_overlay').remove();
  	    $('body').removeClass('help_ui_hide');
  	    $('html').removeClass('help_ui_hide');
  	    $('.tooltip').css('display', 'none');
  	    help_ui_overlay = false;
  	    return false;
  	  } else {
  	    return true;
  	  }
  	});
    
  });
}

function help_ui_start(elements) {
  $.each(elements, function(index, element) { 
     help_ui_display(index,element);
  });
}

function help_ui_display(id,element) {  
  var object, title, position, offsetx, offsety, offsetw, offset, height, width;
  
  if(element instanceof Object) {
    object  = $(element.id);
    offsetx = parseInt(element.offsetx);
    offsety = parseInt(element.offsety);  
    offsetw = parseInt(element.offsetw);
    offseth = parseInt(element.offseth);
  } else {
    object  = $(element);
    offsetx = 0;
    offsety = 0;
    offsetw = 0;
    offseth = 0;
  }

  if(object.length == 0) return;
  
  title = rcmail.get_label('help_ui.'+id);
  
  position = $(object).offset();
  height = $(object).outerHeight();
  width = $(object).outerWidth();
  
  if(title.length > 110) {
    $('.help_ui_overlay_clone').clone().attr('title', title).removeClass('help_ui_overlay_clone').addClass('help_ui_overlay help_ui_large').css({'top' : position.top + offsety, 'left' : position.left + offsetx, 'width' : width+offsetw+'px', 'height' : height+offseth+'px', 'display' : 'block'}).appendTo('body');
  } else {
    $('.help_ui_overlay_clone').clone().attr('title', title).removeClass('help_ui_overlay_clone').addClass('help_ui_overlay help_ui_small').css({'top' : position.top + offsety, 'left' : position.left + offsetx, 'width' : width+offsetw+'px', 'height' : height+offseth+'px', 'display' : 'block'}).appendTo('body');
  }
}

function help_ui_elements_receive(data) {
  rcmail.display_message(rcmail.gettext('click_message', 'help_ui'), 'confirmation');
  help_ui_start(data.elements);
  $(".help_ui_small").tooltip({ tipClass: 'tooltip tooltip_small'}).dynamic();
  $(".help_ui_large").tooltip({ tipClass: 'tooltip tooltip_large'}).dynamic();
}
